{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Feature Selection Based on Univariate ROC_AUC for Classification and MSE for Regression "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Watch it here: https://youtu.be/JEfBvK91CXc\n",
    "\n",
    "Watch Full Playlist: https://www.youtube.com/playlist?list=PLc2rvfiptPSQYzmDIFuq2PqN2n28ZjxDH"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### What is ROC_AUC "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The Receiver Operator Characteristic (ROC) curve is well-known in evaluating classification performance. Owing to its superiority in dealing with imbalanced and cost-sensitive data, the ROC curve has been exploited as a popular metric to evaluate ML models."
   ]
  },
  {
   "attachments": {
    "image.png": {
     "image/png": "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ih690QqmBR0FHkUSRRUtdvxQ4FBsceiS265du3TWgsWL15UIs60unrE6IePcMeQKBRmHgykSWU8VAy8QdLpOHFblkCc3pmEeLex4jvXTafmdx/TG1W1gXZinubkZY8aMKYRnWblyJSZMmIBLLrlElc1/GKpFCzrm4cbv/Kj2mN3j7RUyy4EQEAJCoAcCIup6ACOnhYAQODQBijAKEQowihMKvGuuuUZZqChO6On6xS9+Edmc7xXKNJdffrkq+LbbbutyA5Z1++23K7EUFkBMz3w///nPVXoKQC2INm3ahE984hN4/PHHVR26FBhYDOfOnavqxftRzLGunNfG7fnnn1ex8h577LGCOAyXoYUmrWcUcKwj78+Pbnt1dbXKwnMUhhR5N910k6ozh1yZjnXQlj0KxbFjx6o8FLYsl+Uzf1hEUgiHRWS4XnIsBISAEChJ4HA9KyS9EBACQiBMgJ6p8Xjc6+joUKfplUrv0H//939XHp+xWEx5heo8Tz75pPL4rKqqUml4nh6zt912mxeNRpW37GOPPaaTK69QGsZqamq8//iP/1BpeY/f/e533kknneSx/Pr6ek/fV3uncs9t/fr1nmma3qhRo7z//M//9A4cOKDSPv74495pp53m1dXVeTNmzCjcj568LPPHP/6xl0wmvT179nhz585VbWE5unwe+wa7QlZ1jd/YRtaX18mHnq16Yz0vvfRS1dYvf/nL6jTryLRsh663Ti97ISAEhEBvCfAvQdmEgBAQAkdMgGKEH4YxYfiO8OeSSy5R18aPH++1trYW7sFwJgwRQsGj8/OYQolhTdra2gppWa4OgxJOT+HFvCz7+eefL6QvPqAwW7x4sUprWZbasxyKN+YfN26c95e//EXVm4Lrs5/9bKFeTMf71NbWqrRMn0ql1IfHvB7emF9vH/nIR1SeY445potQo4B94oknlKhjGWwzxSyPV69erYSkLkP2QmAoEnA8z+NHtoEnIMOvJe2XclIICIHeEODwIIdZOaTJjfPKwh8OmY4bNw4ffvihWtKLQ4zcvvrVr6rhVIb1oGMEPzzmMmE333yzmgfHoUwOQbLse+65Rw3p0gGBjhbcuL/++uuVY8KkSZPUueJ/OPTJspctW4a77roL55xzjnLCYL05749OHI8++ihOPfVUNQzK4c9vfvOboHODrhdXqnjggQfUEC7bxmFU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ZA8BV+qypy28JE7ACTSSgD3RvpHR9ysa76105wScgBPoiARcqeuIreZldgI5RCCswPEScRzvweXl4s11JpuX25vjReTmb35tedSXoScS+iL5qqqqFsm6PevTIhVwIU7ACTSKgCt1jcLkkZyAE2gPAig1NTU1sm3bNjnkkEOkpKRElblINCLR6P7fvswK9+ijj8pJJ52kMgoLC2XUqFFy2223aRXz8/M1z7aqb15envDBoag+/czTcuKJJ8qBPQ+Unj17yoQJE4T3au5PfZFn8amzv5ezrVrT83EC7Utg/++K7Vtez90JOIEcIlBQUCBY5y677DL5/PPP1YKGshKPx5tkTYvlxeTuu++WadOmyfPPP6+KD4rjm2++KT//+c/lhhtuULoodu3hUL4uv/xyWb16tezevVt27dol/fr1a3JRsNBRZ+qKEuvOCTiBzk3AXxPWudvXa+cEOjSBF154Qa677jr561//mq4HigoWLbNEpQMaccI068EHHyxbt26VVatWydixYwUFbuXKlTJlyhQ56KCDZPPmzSoJCxcKUWs66mJWNK1XPCF5+Umr3RdffCFdunQRylxSXNLosmTKRD4fFOTKyspGVScso1EJPJITcAJZQcAtdVnRDF4IJ+AE6iNwyimnyJo1a+See+5R5csUIBS68Dq4+tLW54cyWF5erkoOcrt27arKztlnny1Y7DZt2qSWQdIWlxTrtCh5d+/eXad/b7755jpiUX4WL14sQ4YMEaZxx40bJ0zt4kyBIs8HHnhA+vbtK8XFxfK9731Py75z506NR11MQUWhszqiYBIfZQx/plRJgzzKOn/efOnfv7/6X3LJJXUsl7FYTOVQPtIhg2lsU/COOeYYPf/ss8803ccff6zXRx11lJaJNYvunIAT6IAEAndOwAk4gSwlMH78+GDNmjVBPB4PREQ/iURCS1tRUVFvqS283sAgCK6//vogFosFkUgk6N27d3DttdcGn376abB9+/Z0kvLycg23PDkWFxdr/rNnzw7Ig8/TTz+tsqLRaJ34L774osoqKysLHnrooaCgoCBdfvK+6aabtE7Ui3LwCZ+H80UQ14WFhZon1wsXLlQ/k5ufnx/88pe/1DyRQ3lIU1VVpeeEW1z8v//972ue8+fP1zjz5s7T+JdeeqmWo6a6RmX5PyfgBDoWAbfUdUBF3IvsBHKFwLPP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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![image.png](attachment:image.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The ROC curve and AUC (area under the ROC curve) have been widely used to determine the classification accuracy in supervised learning."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "It is basically used in Binary Classification"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Use of ROC_AUC in Classification Problem "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.metrics import accuracy_score, roc_auc_score\n",
    "from sklearn.feature_selection import VarianceThreshold"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Download Dataset: https://github.com/laxmimerit/Data-Files-for-Feature-Selection"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ID</th>\n",
       "      <th>var3</th>\n",
       "      <th>var15</th>\n",
       "      <th>imp_ent_var16_ult1</th>\n",
       "      <th>imp_op_var39_comer_ult1</th>\n",
       "      <th>imp_op_var39_comer_ult3</th>\n",
       "      <th>imp_op_var40_comer_ult1</th>\n",
       "      <th>imp_op_var40_comer_ult3</th>\n",
       "      <th>imp_op_var40_efect_ult1</th>\n",
       "      <th>imp_op_var40_efect_ult3</th>\n",
       "      <th>...</th>\n",
       "      <th>saldo_medio_var33_hace2</th>\n",
       "      <th>saldo_medio_var33_hace3</th>\n",
       "      <th>saldo_medio_var33_ult1</th>\n",
       "      <th>saldo_medio_var33_ult3</th>\n",
       "      <th>saldo_medio_var44_hace2</th>\n",
       "      <th>saldo_medio_var44_hace3</th>\n",
       "      <th>saldo_medio_var44_ult1</th>\n",
       "      <th>saldo_medio_var44_ult3</th>\n",
       "      <th>var38</th>\n",
       "      <th>TARGET</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>23</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>39205.170000</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>34</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>49278.030000</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>23</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>67333.770000</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>8</td>\n",
       "      <td>2</td>\n",
       "      <td>37</td>\n",
       "      <td>0.0</td>\n",
       "      <td>195.0</td>\n",
       "      <td>195.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>64007.970000</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>10</td>\n",
       "      <td>2</td>\n",
       "      <td>39</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>117310.979016</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 371 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   ID  var3  var15  imp_ent_var16_ult1  imp_op_var39_comer_ult1  \\\n",
       "0   1     2     23                 0.0                      0.0   \n",
       "1   3     2     34                 0.0                      0.0   \n",
       "2   4     2     23                 0.0                      0.0   \n",
       "3   8     2     37                 0.0                    195.0   \n",
       "4  10     2     39                 0.0                      0.0   \n",
       "\n",
       "   imp_op_var39_comer_ult3  imp_op_var40_comer_ult1  imp_op_var40_comer_ult3  \\\n",
       "0                      0.0                      0.0                      0.0   \n",
       "1                      0.0                      0.0                      0.0   \n",
       "2                      0.0                      0.0                      0.0   \n",
       "3                    195.0                      0.0                      0.0   \n",
       "4                      0.0                      0.0                      0.0   \n",
       "\n",
       "   imp_op_var40_efect_ult1  imp_op_var40_efect_ult3  ...  \\\n",
       "0                        0                        0  ...   \n",
       "1                        0                        0  ...   \n",
       "2                        0                        0  ...   \n",
       "3                        0                        0  ...   \n",
       "4                        0                        0  ...   \n",
       "\n",
       "   saldo_medio_var33_hace2  saldo_medio_var33_hace3  saldo_medio_var33_ult1  \\\n",
       "0                      0.0                      0.0                     0.0   \n",
       "1                      0.0                      0.0                     0.0   \n",
       "2                      0.0                      0.0                     0.0   \n",
       "3                      0.0                      0.0                     0.0   \n",
       "4                      0.0                      0.0                     0.0   \n",
       "\n",
       "   saldo_medio_var33_ult3  saldo_medio_var44_hace2  saldo_medio_var44_hace3  \\\n",
       "0                     0.0                      0.0                      0.0   \n",
       "1                     0.0                      0.0                      0.0   \n",
       "2                     0.0                      0.0                      0.0   \n",
       "3                     0.0                      0.0                      0.0   \n",
       "4                     0.0                      0.0                      0.0   \n",
       "\n",
       "   saldo_medio_var44_ult1  saldo_medio_var44_ult3          var38  TARGET  \n",
       "0                     0.0                     0.0   39205.170000       0  \n",
       "1                     0.0                     0.0   49278.030000       0  \n",
       "2                     0.0                     0.0   67333.770000       0  \n",
       "3                     0.0                     0.0   64007.970000       0  \n",
       "4                     0.0                     0.0  117310.979016       0  \n",
       "\n",
       "[5 rows x 371 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.read_csv('santander.csv', nrows = 20000)\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((20000, 370), (20000,))"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X = data.drop('TARGET', axis = 1)\n",
    "y = data['TARGET']\n",
    "\n",
    "X.shape, y.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0, stratify = y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Remove Constant, Quasi Constant and Duplicate Features"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "#remove constant and quasi constant features\n",
    "constant_filter = VarianceThreshold(threshold=0.01)\n",
    "constant_filter.fit(X_train)\n",
    "X_train_filter = constant_filter.transform(X_train)\n",
    "X_test_filter = constant_filter.transform(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((16000, 245), (4000, 245))"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train_filter.shape, X_test_filter.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "125"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "370-245"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "#remove duplicate features\n",
    "X_train_T = X_train_filter.T\n",
    "X_test_T = X_test_filter.T"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train_T = pd.DataFrame(X_train_T)\n",
    "X_test_T = pd.DataFrame(X_test_T)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "18"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train_T.duplicated().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "duplicated_features = X_train_T.duplicated()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "features_to_keep = [not index for index in duplicated_features]\n",
    "\n",
    "X_train_unique = X_train_T[features_to_keep].T\n",
    "X_test_unique = X_test_T[features_to_keep].T"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((16000, 227), (16000, 370))"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train_unique.shape, X_train.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "####  Now calculate ROC_AUC Score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "roc_auc = []\n",
    "for feature in X_train_unique.columns:\n",
    "    clf = RandomForestClassifier(n_estimators=100, random_state=0)\n",
    "    clf.fit(X_train_unique[feature].to_frame(), y_train)\n",
    "    y_pred = clf.predict(X_test_unique[feature].to_frame())\n",
    "    roc_auc.append(roc_auc_score(y_test, y_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.5020561820568537, 0.5, 0.5, 0.49986968986187125, 0.501373452866903, 0.49569976544175137, 0.5028068643863192, 0.49986968986187125, 0.5, 0.5, 0.4997393797237425, 0.5017643832812891, 0.49569976544175137, 0.49960906958561374, 0.49895751889497003, 0.49700286682303885, 0.49960906958561374, 0.5021553136956755, 0.4968725566849101, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.49986968986187125, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5029371745244479, 0.4959603857180089, 0.5, 0.5048318679438659, 0.4997393797237425, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.49921813917122754, 0.49921813917122754, 0.49824600955181303, 0.5, 0.5, 0.5, 0.4990878290330988, 0.4983763196899418, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5025462441100617, 0.4990878290330988, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.49986968986187125, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.4997393797237425, 0.5, 0.5, 0.49986968986187125, 0.4991581805187143, 0.4988272087568413, 0.49674224654678134, 0.4995491109331005, 0.5, 0.5, 0.5022856238338043, 0.5012431427287742, 0.5, 0.5, 0.5, 0.49986968986187125, 0.5, 0.4997393797237425, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5076595179963898]\n"
     ]
    }
   ],
   "source": [
    "print(roc_auc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "roc_values = pd.Series(roc_auc)\n",
    "roc_values.index = X_train_unique.columns\n",
    "roc_values.sort_values(ascending =False, inplace = True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "244    0.507660\n",
       "107    0.504832\n",
       "104    0.502937\n",
       "6      0.502807\n",
       "155    0.502546\n",
       "215    0.502286\n",
       "17     0.502155\n",
       "0      0.502056\n",
       "11     0.501764\n",
       "4      0.501373\n",
       "216    0.501243\n",
       "236    0.500000\n",
       "80     0.500000\n",
       "89     0.500000\n",
       "88     0.500000\n",
       "87     0.500000\n",
       "86     0.500000\n",
       "85     0.500000\n",
       "84     0.500000\n",
       "83     0.500000\n",
       "82     0.500000\n",
       "81     0.500000\n",
       "78     0.500000\n",
       "79     0.500000\n",
       "92     0.500000\n",
       "77     0.500000\n",
       "75     0.500000\n",
       "74     0.500000\n",
       "72     0.500000\n",
       "70     0.500000\n",
       "         ...   \n",
       "160    0.500000\n",
       "172    0.500000\n",
       "7      0.499870\n",
       "220    0.499870\n",
       "175    0.499870\n",
       "76     0.499870\n",
       "208    0.499870\n",
       "3      0.499870\n",
       "10     0.499739\n",
       "222    0.499739\n",
       "205    0.499739\n",
       "108    0.499739\n",
       "13     0.499609\n",
       "16     0.499609\n",
       "212    0.499549\n",
       "116    0.499218\n",
       "117    0.499218\n",
       "209    0.499158\n",
       "123    0.499088\n",
       "156    0.499088\n",
       "14     0.498958\n",
       "210    0.498827\n",
       "125    0.498376\n",
       "119    0.498246\n",
       "15     0.497003\n",
       "18     0.496873\n",
       "211    0.496742\n",
       "105    0.495960\n",
       "12     0.495700\n",
       "5      0.495700\n",
       "Length: 227, dtype: float64"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "roc_values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x20a2cb66588>"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXgAAAEFCAYAAADpIfy5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJztnXu4X1V55z9vAglgALlLwyVRU2OKFmuMdrTaWlvDaMFrC7WlMLVRW5SZlrZ02tKRdlrEVmfsYAu22tYbolZNMYhW1IooJAImJCGQhJAcQkJuXHI5Obe3f7zvYq/z4yTnd5KTEPZ8P89znt/ae6+99rq867uuex9zd4QQQrSPCU93BIQQQhwYJPBCCNFSJPBCCNFSJPBCCNFSJPBCCNFSJPBCCNFSJPBCCNFSJPBCCNFSJPBCCNFSDnu6HnziiSf6tGnTnq7HCyHEM5If/vCHm939pG78Pm0CP23aNBYtWvR0PV4IIZ6RmNmD3frVFI0QQrQUCbwQQrQUCbwQQrQUCbwQQrQUCbwQQrQUCbwQQrQUCbwQQrQUCbwQQrSUrgTezOaa2QozW2lml49w/SIz22Rmd+ffO8c/qkIIIcbCqG+ymtlE4BrgF4AeYKGZzXf3ZR1eP+ful3T74CUPPTamiAohhBgb3fTg5wAr3X21u/cB1wPnjVcEpl3+1fEKSgghREU3Aj8VWFcd9+S5Tt5qZovN7AtmdvpYIlFEftrlXx3VXfsXQgixZ7oReBvhnHcc/xswzd1fDPw78M8jBmQ2z8wWmdmiwZ3jM0WzJ+HvdI+lEdlbg3Kgn/d0PvuZ8jyltZ1pVZ0Z/45rNwLfA9Q98tOA9bUHd9/i7rvz8GPAS0cKyN2vc/fZ7j574lHH7kt8hRCitXTTuIyFbgR+ITDDzKab2STgfGB+7cHMTq0OzwWWjykWQgghxp1Rd9G4+4CZXQLcDEwEPu7uS83sSmCRu88H3mdm5wIDwFbgogMYZyGEEF3Q1T/8cPcFwIKOc1dU7j8C/mh8oyaEEGJ/0JusQgjRUiTwQgjRUiTwQgjRUiTwQgjRUiTwQgjRUiTwQgjRUiTwQgjRUiTwQgjRUiTwQgjRUiTwQgjRUiTwQgjRUiTwQgjRUiTwQgjRUiTwQgjRUiTwQgjRUiTwQgjRUiTwQgjRUiTwQgjRUiTwQgjRUiTwQgjRUiTwQgjRUiTwQgjRUiTwQgjRUiTwQgjRUiTwQgjRUiTwQgjRUiTwQgjRUiTwQgjRUiTwQgjRUiTwQgjRUiTwQgjRUiTwQgjRUroSeDOba2YrzGylmV2+F39vMzM3s9njF0UhhBD7wqgCb2YTgWuAc4BZwAVmNmsEf0cD7wNuH+9ICiGEGDvd9ODnACvdfbW79wHXA+eN4O/PgauB3nGMnxBCiH2kG4GfCqyrjnvy3JOY2UuA0939xnGMmxBCiP3gsC782Ajn/MmLZhOADwMXjRqQ2TxgHsDEY07qLoZCCCH2iW568D3A6dXxacD66vho4Czg22a2BngFMH+khVZ3v87dZ7v77IlHHbvvsRZCCDEq3Qj8QmCGmU03s0nA+cD8ctHdH3P3E919mrtPA34AnOvuiw5IjIUQQnTFqALv7gPAJcDNwHLgBndfamZXmtm5BzqCQggh9o1u5uBx9wXAgo5zV+zB78/uf7SEEELsL3qTVQghWooEXgghWooEXgghWooEXgghWooEXgghWooEXgghWooEXgghWooEXgghWooEXgghWooEXgghWooEXgghWooEXgghWooEXgghWooEXgghWooEXgghWooEXgghWooEXgghWooEXgghWooEXgghWooEXgghWooEXgghWooEXgghWooEXgghWooEXgghWooEXgghWooEXgghWooEXgghWooEXgghWooEXgghWooEXgghWooEXgghWooEXgghWkpXAm9mc81shZmtNLPLR7j+bjNbYmZ3m9mtZjZr/KMqhBBiLIwq8GY2EbgGOAeYBVwwgoB/xt1f5O5nA1cDHxr3mAohhBgT3fTg5wAr3X21u/cB1wPn1R7c/fHq8FmAj18UhRBC7AuHdeFnKrCuOu4BXt7pycx+B/hdYBLw2pECMrN5wDyAicecNNa4CiGEGAPd9OBthHNP6aG7+zXu/jzgD4E/GSkgd7/O3We7++yJRx07tpgKIYQYE90IfA9wenV8GrB+L/6vB960P5ESQgix/3Qj8AuBGWY23cwmAecD82sPZjajOnwDcP/4RVEIIcS+MOocvLsPmNklwM3ARODj7r7UzK4EFrn7fOASM3sd0A9sA37jQEZaCCHE6HSzyIq7LwAWdJy7onJfOs7xEkIIsZ/oTVYhhGgpEnghhGgpEnghhGgpEnghhGgpEnghhGgpEnghhGgpEnghhGgpEnghhGgpEnghhGgpEnghhGgpEnghhGgpEnghhGgpEnghhGgpEnghhGgpEnghhGgpEnghhGgpEnghhGgpEnghhGgpEnghhGgpEnghhGgpEnghhGgpEnghhGgpEnghhGgpEnghhGgpEnghhGgpEnghhGgpEnghhGgpEnghhGgpEnghhGgpEnghhGgpEnghhGgpEnghhGgpXQm8mc01sxVmttLMLh/h+u+a2TIzW2xm3zSzM8c/qkIIIcbCqAJvZhOBa4BzgFnABWY2q8PbXcBsd38x8AXg6vGOqBBCiLHRTQ9+DrDS3Ve7ex9wPXBe7cHdv+XuO/PwB8Bp4xtNIYQQY6UbgZ8KrKuOe/LcnvhN4KaRLpjZPDNbZGaLBnc+1n0shRBCjJnDuvBjI5zzET2a/RowG3jNSNfd/TrgOoDJp84YMQwhhBDjQzcC3wOcXh2fBqzv9GRmrwP+GHiNu+8en+gJIYTYV7qZolkIzDCz6WY2CTgfmF97MLOXANcC57r7I+MfTSGEEGNlVIF39wHgEuBmYDlwg7svNbMrzezc9PZBYArweTO728zm7yE4IYQQB4lupmhw9wXAgo5zV1Tu141zvIQQQuwnepNVCCFaigReCCFaigReCCFaigReCCFaigReCCFaigReCCFaigReCCFaigReCCFaigReCCFaigReCCFaigReCCFaigReCCFaigReCCFaigReCCFaigReCCFaigReCCFaigReCCFaigReCCFaigReCCFaigReCCFaigReCCFaigReCCFaigReCCFaigReCCFaigReCCFaigReCCFaigReCCFaigReCCFaigReCCFaigReCCFaigReCCFaSlcCb2ZzzWyFma00s8tHuP5qM7vTzAbM7G3jH00hhBBjZVSBN7OJwDXAOcAs4AIzm9XhbS1wEfCZ8Y6gEEKIfeOwLvzMAVa6+2oAM7seOA9YVjy4+5q8NnQA4iiEEGIf6GaKZiqwrjruyXNCCCEOYboReBvhnO/Lw8xsnpktMrNFgzsf25cghBBCdEk3At8DnF4dnwas35eHuft17j7b3WdPPOrYfQlCCCFEl3Qj8AuBGWY23cwmAecD8w9stIQQQuwvowq8uw8AlwA3A8uBG9x9qZldaWbnApjZy8ysB3g7cK2ZLT2QkRZCCDE63eyiwd0X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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "roc_values.plot.bar()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "244    0.507660\n",
       "107    0.504832\n",
       "104    0.502937\n",
       "6      0.502807\n",
       "155    0.502546\n",
       "215    0.502286\n",
       "17     0.502155\n",
       "0      0.502056\n",
       "11     0.501764\n",
       "4      0.501373\n",
       "216    0.501243\n",
       "dtype: float64"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sel = roc_values[roc_values>0.5]\n",
    "sel"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train_roc = X_train_unique[sel.index]\n",
    "X_test_roc = X_test_unique[sel.index]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Build the Model and compare the performance "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "def run_randomForest(X_train, X_test, y_train, y_test):\n",
    "    clf = RandomForestClassifier(n_estimators=100, random_state=0, n_jobs=-1)\n",
    "    clf.fit(X_train, y_train)\n",
    "    y_pred = clf.predict(X_test)\n",
    "    print('Accuracy on test set: ', accuracy_score(y_test, y_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accuracy on test set:  0.95275\n",
      "Wall time: 891 ms\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "run_randomForest(X_train_roc, X_test_roc, y_train, y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(16000, 11)"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train_roc.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accuracy on test set:  0.9585\n",
      "Wall time: 1.49 s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "run_randomForest(X_train, X_test, y_train, y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Feature Selection using RMSE in Regression "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.datasets import load_boston\n",
    "from sklearn.linear_model import LinearRegression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      ".. _boston_dataset:\n",
      "\n",
      "Boston house prices dataset\n",
      "---------------------------\n",
      "\n",
      "**Data Set Characteristics:**  \n",
      "\n",
      "    :Number of Instances: 506 \n",
      "\n",
      "    :Number of Attributes: 13 numeric/categorical predictive. Median Value (attribute 14) is usually the target.\n",
      "\n",
      "    :Attribute Information (in order):\n",
      "        - CRIM     per capita crime rate by town\n",
      "        - ZN       proportion of residential land zoned for lots over 25,000 sq.ft.\n",
      "        - INDUS    proportion of non-retail business acres per town\n",
      "        - CHAS     Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)\n",
      "        - NOX      nitric oxides concentration (parts per 10 million)\n",
      "        - RM       average number of rooms per dwelling\n",
      "        - AGE      proportion of owner-occupied units built prior to 1940\n",
      "        - DIS      weighted distances to five Boston employment centres\n",
      "        - RAD      index of accessibility to radial highways\n",
      "        - TAX      full-value property-tax rate per $10,000\n",
      "        - PTRATIO  pupil-teacher ratio by town\n",
      "        - B        1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town\n",
      "        - LSTAT    % lower status of the population\n",
      "        - MEDV     Median value of owner-occupied homes in $1000's\n",
      "\n",
      "    :Missing Attribute Values: None\n",
      "\n",
      "    :Creator: Harrison, D. and Rubinfeld, D.L.\n",
      "\n",
      "This is a copy of UCI ML housing dataset.\n",
      "https://archive.ics.uci.edu/ml/machine-learning-databases/housing/\n",
      "\n",
      "\n",
      "This dataset was taken from the StatLib library which is maintained at Carnegie Mellon University.\n",
      "\n",
      "The Boston house-price data of Harrison, D. and Rubinfeld, D.L. 'Hedonic\n",
      "prices and the demand for clean air', J. Environ. Economics & Management,\n",
      "vol.5, 81-102, 1978.   Used in Belsley, Kuh & Welsch, 'Regression diagnostics\n",
      "...', Wiley, 1980.   N.B. Various transformations are used in the table on\n",
      "pages 244-261 of the latter.\n",
      "\n",
      "The Boston house-price data has been used in many machine learning papers that address regression\n",
      "problems.   \n",
      "     \n",
      ".. topic:: References\n",
      "\n",
      "   - Belsley, Kuh & Welsch, 'Regression diagnostics: Identifying Influential Data and Sources of Collinearity', Wiley, 1980. 244-261.\n",
      "   - Quinlan,R. (1993). Combining Instance-Based and Model-Based Learning. In Proceedings on the Tenth International Conference of Machine Learning, 236-243, University of Massachusetts, Amherst. Morgan Kaufmann.\n",
      "\n"
     ]
    }
   ],
   "source": [
    "boston = load_boston()\n",
    "print(boston.DESCR)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>CRIM</th>\n",
       "      <th>ZN</th>\n",
       "      <th>INDUS</th>\n",
       "      <th>CHAS</th>\n",
       "      <th>NOX</th>\n",
       "      <th>RM</th>\n",
       "      <th>AGE</th>\n",
       "      <th>DIS</th>\n",
       "      <th>RAD</th>\n",
       "      <th>TAX</th>\n",
       "      <th>PTRATIO</th>\n",
       "      <th>B</th>\n",
       "      <th>LSTAT</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.00632</td>\n",
       "      <td>18.0</td>\n",
       "      <td>2.31</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.538</td>\n",
       "      <td>6.575</td>\n",
       "      <td>65.2</td>\n",
       "      <td>4.0900</td>\n",
       "      <td>1.0</td>\n",
       "      <td>296.0</td>\n",
       "      <td>15.3</td>\n",
       "      <td>396.90</td>\n",
       "      <td>4.98</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.02731</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.07</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.469</td>\n",
       "      <td>6.421</td>\n",
       "      <td>78.9</td>\n",
       "      <td>4.9671</td>\n",
       "      <td>2.0</td>\n",
       "      <td>242.0</td>\n",
       "      <td>17.8</td>\n",
       "      <td>396.90</td>\n",
       "      <td>9.14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.02729</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.07</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.469</td>\n",
       "      <td>7.185</td>\n",
       "      <td>61.1</td>\n",
       "      <td>4.9671</td>\n",
       "      <td>2.0</td>\n",
       "      <td>242.0</td>\n",
       "      <td>17.8</td>\n",
       "      <td>392.83</td>\n",
       "      <td>4.03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.03237</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.18</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.458</td>\n",
       "      <td>6.998</td>\n",
       "      <td>45.8</td>\n",
       "      <td>6.0622</td>\n",
       "      <td>3.0</td>\n",
       "      <td>222.0</td>\n",
       "      <td>18.7</td>\n",
       "      <td>394.63</td>\n",
       "      <td>2.94</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.06905</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.18</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.458</td>\n",
       "      <td>7.147</td>\n",
       "      <td>54.2</td>\n",
       "      <td>6.0622</td>\n",
       "      <td>3.0</td>\n",
       "      <td>222.0</td>\n",
       "      <td>18.7</td>\n",
       "      <td>396.90</td>\n",
       "      <td>5.33</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      CRIM    ZN  INDUS  CHAS    NOX     RM   AGE     DIS  RAD    TAX  \\\n",
       "0  0.00632  18.0   2.31   0.0  0.538  6.575  65.2  4.0900  1.0  296.0   \n",
       "1  0.02731   0.0   7.07   0.0  0.469  6.421  78.9  4.9671  2.0  242.0   \n",
       "2  0.02729   0.0   7.07   0.0  0.469  7.185  61.1  4.9671  2.0  242.0   \n",
       "3  0.03237   0.0   2.18   0.0  0.458  6.998  45.8  6.0622  3.0  222.0   \n",
       "4  0.06905   0.0   2.18   0.0  0.458  7.147  54.2  6.0622  3.0  222.0   \n",
       "\n",
       "   PTRATIO       B  LSTAT  \n",
       "0     15.3  396.90   4.98  \n",
       "1     17.8  396.90   9.14  \n",
       "2     17.8  392.83   4.03  \n",
       "3     18.7  394.63   2.94  \n",
       "4     18.7  396.90   5.33  "
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X = pd.DataFrame(boston.data, columns=boston.feature_names)\n",
    "X.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "y = boston.target"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "mse = []\n",
    "for feature in X_train.columns:\n",
    "    clf = LinearRegression()\n",
    "    clf.fit(X_train[feature].to_frame(), y_train)\n",
    "    y_pred = clf.predict(X_test[feature].to_frame())\n",
    "    mse.append(mean_squared_error(y_test, y_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[76.38674157646072,\n",
       " 84.66034377707906,\n",
       " 77.02905244667242,\n",
       " 79.36120219345942,\n",
       " 76.95375968209433,\n",
       " 46.90735162739531,\n",
       " 80.3915476111525,\n",
       " 82.61874125667717,\n",
       " 82.46499985731934,\n",
       " 78.30831374720842,\n",
       " 81.79497121208001,\n",
       " 77.75285601192718,\n",
       " 46.336305360025925]"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mse"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "ZN         84.660344\n",
       "DIS        82.618741\n",
       "RAD        82.465000\n",
       "PTRATIO    81.794971\n",
       "AGE        80.391548\n",
       "CHAS       79.361202\n",
       "TAX        78.308314\n",
       "B          77.752856\n",
       "INDUS      77.029052\n",
       "NOX        76.953760\n",
       "CRIM       76.386742\n",
       "RM         46.907352\n",
       "LSTAT      46.336305\n",
       "dtype: float64"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mse = pd.Series(mse, index = X_train.columns)\n",
    "mse.sort_values(ascending=False, inplace = True)\n",
    "mse"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x20a41dbc240>"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "mse.plot.bar()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train_2 = X_train[['RM', 'LSTAT']]\n",
    "X_test_2 = X_test[['RM', 'LSTAT']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "r2_score:  0.5409084827186417\n",
      "rmse:  6.114172522817781\n",
      "sd of house price:  9.188011545278203\n",
      "Wall time: 3 ms\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "model = LinearRegression()\n",
    "model.fit(X_train_2, y_train)\n",
    "y_pred = model.predict(X_test_2)\n",
    "print('r2_score: ', r2_score(y_test, y_pred))\n",
    "print('rmse: ', np.sqrt(mean_squared_error(y_test, y_pred)))\n",
    "print('sd of house price: ', np.std(y))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "r2_score:  0.5892223849182492\n",
      "rmse:  5.783509315085146\n",
      "sd of house price:  9.188011545278203\n",
      "Wall time: 4 ms\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "model = LinearRegression()\n",
    "model.fit(X_train, y_train)\n",
    "y_pred = model.predict(X_test)\n",
    "print('r2_score: ', r2_score(y_test, y_pred))\n",
    "print('rmse: ', np.sqrt(mean_squared_error(y_test, y_pred)))\n",
    "print('sd of house price: ', np.std(y))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
